// frontend/js/main.js

// ==== 全局变量 ====
let map;                // 地图对象
let markerList = [];    // 存储当前的 markers

// ==== 初始化地图 & 首次加载 & 绑定搜索 ====
function init() {
  // 1. 初始化地图（注意：容器 ID 必须和 index.html 中的 id 完全一致）
  map = new AMap.Map('map-container', {
    center: [114.3055, 30.5928], // 武汉市中心
    zoom: 13
  });

  // 2. 首次加载全部 POI
  loadAllPOI();

  // 3. 绑定搜索表单提交
  bindSearch();
}

// ==== 从后端获取所有 POI 点 ====
async function loadAllPOI() {
  try {
    const res = await fetch('http://localhost:3001/api/poi');
    const json = await res.json();
    if (json.success) {
      updateMapMarkers(json.data);
      updateRestaurantList(json.data);
    } else {
      console.warn('加载全部 POI 时后端返回失败：', json.error);
    }
  } catch (err) {
    console.error('加载全部 POI 出错：', err);
  }
}

// ==== 绑定搜索表单提交事件 ====
function bindSearch() {
  const form = document.getElementById('search-form');
  form.addEventListener('submit', async function (e) {
    e.preventDefault();

    const params = new URLSearchParams();

    // 基本文本/下拉字段
    ['shop_name','category','region','business_hours','cuisine_type','recommend_level']
      .forEach(id => {
        const v = document.getElementById(id).value.trim();
        if (v) params.append(id, v);
      });

    // 人数 x → min_people & max_people
    const people = document.getElementById('people').value;
    if (people) {
      params.append('min_people', people);
      params.append('max_people', people);
    }

    // 价格范围 m~n
    const min_price = document.getElementById('min_price').value;
    const max_price = document.getElementById('max_price').value;
    if (min_price) params.append('min_price', min_price);
    if (max_price) params.append('max_price', max_price);

    const url = `http://localhost:3001/api/poi/search?${params.toString()}`;
    console.log('搜索 URL:', url);

    try {
      const res = await fetch(url);
      const json = await res.json();
      if (json.success) {
        updateMapMarkers(json.data);
        updateRestaurantList(json.data);
      } else {
        console.warn('后端返回失败：', json.error);
      }
    } catch (err) {
      console.error('搜索出错：', err);
    }
  });
}

// ==== 更新地图 Marker ====
function updateMapMarkers(pois) {
  // 清除旧 markers
  markerList.forEach(m => m.setMap(null));
  markerList = [];

  // 添加新 markers
  pois.forEach(poi => {
    const marker = new AMap.Marker({
      position: [poi.longitude, poi.latitude],
      title: poi.shop_name,
      map: map
    });
    markerList.push(marker);
  });
}

// ==== 更新侧边栏列表 ====
function updateRestaurantList(pois) {
  const container = document.getElementById('restaurant-list');
  container.innerHTML = '';
  pois.forEach(poi => {
    const div = document.createElement('div');
    div.innerHTML = `
      <strong>${poi.shop_name}</strong><br>
      分类：${poi.category} | 地区：${poi.region}<br>
      人数：${poi.min_people}-${poi.max_people} 人 | 
      价格：¥${poi.min_price}-${poi.max_price}<br>
      营业时段：${poi.business_hours} | 
      推荐：${poi.recommend_level}<hr>
    `;
    container.appendChild(div);
  });
}

// ==== DOM 加载完毕后执行 init() ====
document.addEventListener('DOMContentLoaded', init);
